package com.example.gitzuoye3;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

/**
 * SQLite数据库帮助类，负责数据库的创建和版本管理
 */
public class SQL extends SQLiteOpenHelper {
    // 数据库名称和版本号常量
    private static final String DATABASE_NAME = "userinfo.db";
    private static final int DATABASE_VERSION = 3; // 增加版本号

    /**
     * 构造函数
     * @param context 上下文对象
     */
    public SQL(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    /**
     * 数据库首次创建时调用
     * @param db SQLiteDatabase对象
     */
    @Override
    public void onCreate(SQLiteDatabase db) {
        // 1. 创建用户登录表，包含id、用户名(唯一)、密码字段
        String sql = "CREATE TABLE IF NOT EXISTS logins ("
                + "id INTEGER PRIMARY KEY AUTOINCREMENT, "
                + "username TEXT UNIQUE NOT NULL, "
                + "password TEXT NOT NULL);";
        db.execSQL(sql);
        Log.d("DB_CREATE", "logins表创建成功");

        // 2. 创建电影点击次数表，包含id、电影id、点击次数字段
        String movieSql = "CREATE TABLE IF NOT EXISTS movie_clicks ("
                + "id INTEGER PRIMARY KEY AUTOINCREMENT, "
                + "movie_id INTEGER NOT NULL, "
                + "click_count INTEGER DEFAULT 0);";
        db.execSQL(movieSql);
        Log.d("DB_CREATE", "movie_clicks表创建成功");
    }

    /**
     * 数据库升级时调用
     * @param db SQLiteDatabase对象
     * @param oldVersion 旧版本号
     * @param newVersion 新版本号
     */
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        Log.d("DB_UPGRADE", "更新数据库从 " + oldVersion + " 到 " + newVersion);

        // 1. 如果旧版本小于2，删除并重建用户表
        if (oldVersion < 2) {
            db.execSQL("DROP TABLE IF EXISTS logins");
            onCreate(db);
        }

        // 2. 如果旧版本小于3，添加电影点击次数表
        if (oldVersion < 3) {
            String movieSql = "CREATE TABLE IF NOT EXISTS movie_clicks ("
                    + "id INTEGER PRIMARY KEY AUTOINCREMENT, "
                    + "movie_id INTEGER NOT NULL, "
                    + "click_count INTEGER DEFAULT 0);";
            db.execSQL(movieSql);
            Log.d("DB_UPGRADE", "创建movie_clicks表");
        }
    }

    /**
     * 数据库降级时调用
     * @param db SQLiteDatabase对象
     * @param oldVersion 旧版本号
     * @param newVersion 新版本号
     */
    @Override
    public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // 直接调用升级方法处理降级
        onUpgrade(db, oldVersion, newVersion);
    }
}